|
ARD2
1.00 for Rev B. Hardware
Airbag Reference Demonstrator using MPC5604P
|
00001 00017 #ifndef MMA51XX_H_ 00018 #define MMA51XX_H_ 00019 /* 00020 ************************************************************** 00021 * Defines, Macros and Typedefs 00022 **************************************************************/ 00023 /*** Constant Macros ***/ 00024 /* Default Yes and No defines */ 00025 #ifndef TRUE 00026 #define TRUE (1u) 00027 #endif 00028 #ifndef CLEAR 00029 #define CLEAR (0u) 00030 #endif 00031 #ifndef BITS_IN_NIBBLE 00032 #define BITS_IN_NIBBLE (4u) 00033 #endif 00034 #ifndef BITS_IN_BYTE 00035 #define BITS_IN_BYTE (8u) 00036 #endif 00037 #ifndef BYTES_IN_16 00038 #define BYTES_IN_16 (2u) 00039 #endif 00040 #ifndef BYTES_IN_32 00041 #define BYTES_IN_32 (4u) 00042 #endif 00043 00044 #ifndef BIT_DEFINITION 00045 #define BIT_DEFINITION 00046 #define BIT0 (1u << 0u) 00047 #define BIT1 (1u << 1u) 00048 #define BIT2 (1u << 2u) 00049 #define BIT3 (1u << 3u) 00050 #define BIT4 (1u << 4u) 00051 #define BIT5 (1u << 5u) 00052 #define BIT6 (1u << 6u) 00053 #define BIT7 (1u << 7u) 00054 #define BIT8 (1u << 8u) 00055 #define BIT9 (1u << 9u) 00056 #define BIT10 (1u << 10) 00057 #define BIT11 (1u << 11) 00058 #define BIT12 (1u << 12) 00059 #define BIT13 (1u << 13) 00060 #define BIT14 (1u << 14) 00061 #define BIT15 (1u << 15) 00062 #define BIT16 (1u << 16) 00063 #define BIT17 (1u << 17) 00064 #define BIT18 (1u << 18) 00065 #define BIT19 (1u << 19) 00066 #define BIT20 (1u << 20) 00067 #define BIT21 (1u << 21) 00068 #define BIT22 (1u << 22) 00069 #define BIT23 (1u << 23) 00070 #define BIT24 (1u << 24) 00071 #define BIT25 (1u << 25) 00072 #define BIT26 (1u << 26) 00073 #define BIT27 (1u << 27) 00074 #define BIT28 (1u << 28) 00075 #define BIT29 (1u << 29) 00076 #define BIT30 (1u << 30) 00077 #define BIT31 (1u << 31) 00078 #endif 00079 /*** Function Macros ***/ 00080 #ifndef N_ELEMENTS 00081 #define N_ELEMENTS(X) (sizeof(X)/sizeof(*(X))) 00082 #endif 00083 00084 /* Defines for status */ 00085 #define MMA5100_SENSOR_READY_STATUS BIT15 00086 #define MMA5100_SENSOR_READY_UNLOCKED_STATUS (MMA5100_SENSOR_READY_STATUS | BIT14) 00087 #define MMA5100_SENSOR_DEFECT_STATUS BIT13 00088 #define MMA5100_SENSOR_BUSY_STATUS BIT12 00089 #define MMA5100_COMMAND_NOT_RECOGNIZED BIT11 00090 00091 /* Defines for raw data - straight from the spec */ 00092 #define MMA5100_SENSOR_DEFECT ((uint16_t)0x1F4) 00093 #define MMA5100_SENSOR_BUSY ((uint16_t)0x1e8) 00094 #define MMA5100_SENSOR_READY ((uint16_t)0x1e7) 00095 #define MMA5100_SENSOR_READY_UNLOCKED ((uint16_t)0x1e6) 00096 00097 00098 #define MMA5100_DATA_INDICATOR ((uint16_t)0x10u) 00099 #define MMA5100_CONTENTS_MASK ((uint16_t)0x0Fu) 00100 #define MMA5100_N_REGISTERS ((uint8_t)19u) /* Size of MMA5100_REGISTER_INDEX */ 00101 #define MMA5100_UL_FOR_DATA ((uint16_t)0x220u) 00102 #define MMA5100_LL_FOR_DATA ((uint16_t)0x1FFu) 00103 #define MMA5100_UL_FOR_STATUS ((uint16_t)0x200u) 00104 #define MMA5100_LL_FOR_STATUS ((uint16_t)0x1E0u) 00105 00106 00107 /*** Enums ***/ 00108 enum MMA5100_REGISTER_INDEX 00109 { 00110 PROTOCOL = 0, N_DATA_BLOCKS, MANUFACTURER, SENSOR_TYPE, AXIS, RANGE, DEVCFG2, 00111 PRODUCT_REVISION, DEVCFG6, PROD_DATE_1, PROD_DATE_2, SN0, SN1, SN2, SN3, 00112 INIT_RAW_OFFSET, COMBINED_OFFSET_SELF_TEST, AVG_SELF_TEST, DEVCFG1 00113 }; 00114 enum MMA5100_RAW_DATA_INDEX 00115 { 00116 MMA5100_D1 = 0, MMA5100_D2, MMA5100_D3, MMA5100_D4, MMA5100_D5, MMA5100_D6, 00117 MMA5100_D7, MMA5100_D8, MMA5100_D9, MMA5100_D10, MMA5100_D11, MMA5100_D12, 00118 MMA5100_D13, MMA5100_D14, MMA5100_D15, MMA5100_D16, MMA5100_D17, MMA5100_D18, 00119 MMA5100_D19, MMA5100_D20, MMA5100_D21, MMA5100_D22, MMA5100_D23, MMA5100_D24, 00120 MMA5100_D25, MMA5100_D26, MMA5100_D27, MMA5100_D28, MMA5100_D29, MMA5100_D30, 00121 MMA5100_D31, MMA5100_D32 00122 }; 00123 /*** TypeDefs ***/ 00124 00125 /* 00126 ************************************************************** 00127 * Declarations 00128 **************************************************************/ 00129 /*** Global ***/ 00130 /*** Static ***/ 00131 00132 /*** Constant ***/ 00133 /* 00134 ************************************************************** 00135 * Function Prototypes 00136 **************************************************************/ 00137 /* 00138 ****************************************************************************** 00139 * 00140 * Function: u16fnMMA5100TreatData() 00141 * 00142 */ 00166 uint16_t u16fnMMA5100TreatData(uint16_t* pu16SatData, 00167 uint8_t* pu8ResultArray, 00168 uint8_t* pu8CurrentIndex, 00169 uint8_t* pu8IndexAdder, 00170 uint32_t* pu32AlreadyWritten); 00171 #endif /* MMA51XX_H_ */